package server;

import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;

/**
 * 封装读取流的请求对象
 */
public class Request {
    //客户端请求服务器路径
    private String url;
    //客户端请求的表单数据
    private Map<String, String> paramMap = new HashMap<>();

    public Request(InputStream in) {
        try {
            byte[] byteArray = new byte[1024];
            //将读取流中的数据，读取到指定数组
            in.read(byteArray);
            //将字节数组数据，转化为字符串
            String str = new String(byteArray).trim();
            System.out.println(str);
            fengzhuang(str);
        } catch (Exception e) {
            e.printStackTrace();
        }

    }

    public String getUrl() {
        return url;
    }

    @Override
    public String toString() {
        return "Request{" +
                "url='" + url + '\'' +
                ", paramMap=" + paramMap +
                '}';
    }

    public void fengzhuang(String str) {
        String[] array = str.split("\\s+");
        if (array[0].equals("GET")) {
            String getStr = array[1];
            String[] getArray = getStr.split("\\?");
            if (getArray.length == 1) {
                this.url = getArray[0].substring(1);

            } else {
                this.url = getArray[0].substring(1);
                String[] wordArray = getArray[1].split("&");
                for (int i = 0; i < wordArray.length; i++) {
                    String[] mapStrs = wordArray[i].split("=");
                    paramMap.put(mapStrs[0], mapStrs[1]);
                }
            }


        } else if (array[0].equals("POST")) {
            String getStr = array[array.length - 1];
            String[] getArray = getStr.split("\\?");
            this.url = getArray[0].substring(1);
            String[] wordArray = getArray[1].split("&");
            for (int i = 0; i < wordArray.length; i++) {
                String[] mapStrs = wordArray[i].split("=");
                paramMap.put(mapStrs[0], mapStrs[1]);
            }

        }
    }
}
